/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.flowumi.controladores.estudiante;

import com.flowumi.controladores.SessionFlowumiUtilBean;
import com.flowumi.controladores.profesor.ProfesorDetalleCursoBean;
import com.flowumi.entity.Algoritmo;
import com.flowumi.entity.Cursosestudiantesactividades;
import com.flowumi.facade.EstudianteFacade;
import java.io.IOException;
import java.io.Serializable;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.NavigationHandler;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.context.Flash;
import org.apache.log4j.Logger;

/**
 *
 * @author ideacentre
 */
@ManagedBean
@ViewScoped
public class EstudianteDetalleActividadBean implements Serializable {

    private static final Logger LOGGER =
            Logger.getLogger(EstudianteDetalleActividadBean.class);
    @EJB
    EstudianteFacade estudianteFacade;
    private Cursosestudiantesactividades cursosestudiantesactividades;
    @ManagedProperty("#{sessionFlowumiUtil}")
    private SessionFlowumiUtilBean sessionBean;
    private boolean noCreada;

    public void setSessionBean(SessionFlowumiUtilBean sessionBean) {
        this.sessionBean = sessionBean;
    }

    public EstudianteDetalleActividadBean() {
    }

    @PostConstruct
    public void init() {
         if (sessionBean.getUsuario().getIdRol() == null || sessionBean.getUsuario().getIdRol().getIdRol() != 3) {
            try {
                sessionBean.Desconectar();
                FacesContext.getCurrentInstance().getExternalContext().redirect("InicioSession.xhtml");
            } catch (IOException ex) {
                LOGGER.error(ex);
            }
        }
        Flash flash = FacesContext.getCurrentInstance().getExternalContext().getFlash();
        Long idCurso = (Long) flash.get("idCurso");
        Integer idActividad = (Integer) flash.get("idActividad");
        if (idCurso != null && idActividad != null) {
            LOGGER.debug("Buscando cursosestudiantesactividades");
            cursosestudiantesactividades = estudianteFacade.getCursoEstudianteActividad(idCurso, sessionBean.getUsuario().getNombreUsuario(), idActividad);
            noCreada = cursosestudiantesactividades.getActividades().getIdAlgoritmo() == null;
        } else {
            FacesContext facesContext = FacesContext.getCurrentInstance();
            String redirect = "/pages/EstudianteInicio.xhtml";
            NavigationHandler myNav = facesContext.getApplication().getNavigationHandler();
            myNav.handleNavigation(facesContext, null, redirect);
        }
    }

    public Cursosestudiantesactividades getCursosestudiantesactividades() {
        return cursosestudiantesactividades;
    }

    public void setCursosestudiantesactividades(Cursosestudiantesactividades cursosestudiantesactividades) {
        this.cursosestudiantesactividades = cursosestudiantesactividades;
    }

    public boolean isNoCreada() {
        return noCreada;
    }

    public void setNoCreada(boolean noCreada) {
        this.noCreada = noCreada;
    }

    public String GoEditorAlgoritmo() {
        if (cursosestudiantesactividades.getIdAlgoritmo() == null) {
            Algoritmo algoritmo = new Algoritmo();
            algoritmo.setJsonAlgoritmo(cursosestudiantesactividades.getActividades().getIdAlgoritmo().getJsonAlgoritmo());
            algoritmo.setVariables(cursosestudiantesactividades.getActividades().getIdAlgoritmo().getVariables());
            cursosestudiantesactividades.setIdAlgoritmo(algoritmo);
            estudianteFacade.actualizarAlgoritmoActividad(cursosestudiantesactividades);
             cursosestudiantesactividades = estudianteFacade.getCursoEstudianteActividad(cursosestudiantesactividades.getCursosestudiantesactividadesPK().getIdCurso(), 
                     sessionBean.getUsuario().getNombreUsuario(), cursosestudiantesactividades.getCursosestudiantesactividadesPK().getIdActividad());
        }
        LOGGER.info("Navegando a la pagina de edicion del algoritmo con id: " + cursosestudiantesactividades.getIdAlgoritmo().getIdAlgoritmo());
        Flash flash = FacesContext.getCurrentInstance().getExternalContext().getFlash();
        flash.put("idAlgoritmo", cursosestudiantesactividades.getIdAlgoritmo().getIdAlgoritmo());
        flash.put("nombreAlgoritmo", cursosestudiantesactividades.getCursosestudiantesactividadesPK().getEstudiante()
                +cursosestudiantesactividades.getCursosestudiantesactividadesPK().getIdCurso()
                +cursosestudiantesactividades.getCursosestudiantesactividadesPK().getIdActividad());
        LOGGER.debug("go");
        return "/pages/EstudianteActividadAlgoritmo.xhtml";
    }
}
